// 通过common/config/router.js对路由进行了二次封装
// 该文件为原有的路由信息，应当删除
// 在该文件中引入common/config/router.js中的路由信息


import Vue from 'vue';
import Router from 'vue-router';
import routes from './common/config/router.js'; // 引入路由配置

Vue.use(Router);

let router = new Router({ routes });

// 全局前置守卫
// 添加全局路由守卫
router.beforeEach((to, from, next) => {
  // console.log('路由跳转：', {
  //     from: from.path,
  //     to: to.path,
  //     name: to.name
  // });

  // 防止重复导航
  if (to.path === from.path) {
    console.log('检测到重复导航，已阻止');
    next(false);
    return;
  }

  // 获取token
  const token = sessionStorage.getItem('token');
  console.log('当前路由信息：', { to, from, token });

  // 处理登录页面
  if (to.name === 'LoginPage') {
    if (token) {
      console.log('已登录，重定向到首页');
      next({ name: 'index' });
    } else {
      console.log('未登录，允许访问登录页');
      next();
    }
    return;
  }

  // 处理未登录状态
  if (!token) {
    console.log('未登录，重定向到登录页');
    next({ name: 'LoginPage' });
    return;
  }

  // 处理已登录状态
  console.log('已登录，检查权限');

  // 获取用户权限
  const permissions = JSON.parse(sessionStorage.getItem('permissions') || '[]');
  // console.log('用户权限：', permissions);

  // 检查路由权限
  if (to.name === 'index' || to.name === 'error-404') {
    console.log('允许访问首页或404页面');
    next();
    return;
  }

  // 检查用户是否有权限访问该路由
  const hasPermission = permissions.some(p => {
    return p === to.name;
  });

  if (hasPermission) {
    console.log('有权限访问，允许通过');
    next();
  } else {
    console.log('无权限访问，重定向到首页');
    // 如果是商品相关页面，检查是否有商品管理权限
    if (to.name && to.name.startsWith('shop-')) {
      const hasShopPermission = permissions.some(p => p.startsWith('shop-'));
      if (hasShopPermission) {
        // console.log('有商品管理权限，允许访问');
        next();
        return;
      }
    }
    // 添加白名单路由
    const whiteList = ['index', 'error-404', 'shop-goods-list'];
    if (whiteList.includes(to.name)) {
      // console.log('白名单路由，允许访问');
      next();
      return;
    }
    next({ name: 'index' });
  }
});

export default router;
// [
//     {
//         path: '/',
//         name: 'AppLayout',
//         component:() => import('./views/layout.vue'),

//         // http://localhost:8080/#/index可以访问，需要在layout主页面中添加<router-view />
//         children:[{
//             path: '/index',
//             name: 'BackendIndex',
//             component: () => import('./views/index/index.vue'),
//         }]
//     },
//     {
//         path: '/login',
//         name: 'LoginPage',
//         component: () => import('./views/login/index.vue'),
//     }
// ]
// 在 router/index.js 中添加


// const originalPush = Router.prototype.push
// Router.prototype.push = function push(location) {
//   return originalPush.call(this, location).catch(err => {
//     if (err.name !== 'NavigationDuplicated') throw err
//   })
// }

// 解决路由重复点击报错问题
const originPath = Router.prototype.push
Router.prototype.push = function push(location) {
  return originPath.call(this, location).catch(err => {
    if (err.name !== 'NavigationDuplicated') {
      throw err
    }
  })
}


// 路由错误处理
router.onError((error) => {
  console.error('路由错误：', error);
});